package com.aims.server.controller;

import com.aims.common.model.PageResult;
import com.aims.common.model.R;
import com.aims.server.domain.dto.CertificateQueryDTO;
import com.aims.server.domain.dto.CertificateSaveDTO;
import com.aims.server.domain.vo.CertificateVO;
import com.aims.server.service.CertificateService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * 证书信息Controller
 */
@RestController
@RequestMapping("/certificate")
public class CertificateController {

    @Resource
    private CertificateService certificateService;

    /**
     * 分页查询证书列表
     *
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    @GetMapping("/list")
    public R<PageResult<CertificateVO>> list(CertificateQueryDTO queryDTO) {
        PageResult<CertificateVO> pageResult = certificateService.pageList(queryDTO);
        return R.success(pageResult);
    }

    /**
     * 新增或编辑证书
     * 当参数中id不为空时为编辑，id为空时是新增
     *
     * @param saveDTO 保存数据
     * @return 操作结果
     */
    @PostMapping("/saveOrUpdate")
    public R<Void> saveOrUpdate(@Validated @RequestBody CertificateSaveDTO saveDTO) {
        certificateService.saveOrUpdate(saveDTO);
        return R.success();
    }

    /**
     * 删除证书（逻辑删除）
     * 根据id查询数据，将数据状态设置为0
     *
     * @param id 证书ID
     * @return 操作结果
     */
    @DeleteMapping("/{id}")
    public R<Void> delete(@PathVariable Long id) {
        certificateService.delete(id);
        return R.success();
    }
}